package com.jh.mms.dao;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Session;

public interface IBaseDao <T, PK extends Serializable> {
	/**
	 * 获取连接会话
	 * @return	org.hibernate.Session
	 */
	Session openSession();
	
	/**
	 * 关闭连接会话
	 */
	void closeSession();
	
	/**
	 * 执行语句 (UPDATE或DELETE)
	 * @param	sql 执行语句
	 * @param	params 参数集合
	 * @return	true 成功
	 */
	boolean executeSQL(String sql, List<T> params);
	
	/**
	 * 批量执行语句 (UPDATE或DELETE)
	 * @param sql	执行语句列表
	 * @param params	参数集合(与执行语句一丄1�7对应)
	 * @return	集合长度丄1�7�明全部执行成功，否则为与失败记录相关的sql语句
	 */
	List<String> executeBatch(List<String> sql, List<T> params);
	/**
	 * 查询结果
	 * @param sql	查询语句
	 * @return	结果雄1�7 List
	 * @throws	Exception
	 */
	List<T> find(String sql) throws Exception;
	
	/**
	 * 查询结果(分页)
	 * @param sql	查询语句
	 * @param pageRows	每页记录条数
	 * @param pageIndex	当前页索弄1�7
	 * @return	结果雄1�7 List
	 */
	List<T> find(String sql, int pageRows, int pageIndex);
	
	/**
	 * 查询结果
	 * @param sql	查询语句
	 * @param params	参数集合
	 * @return	结果雄1�7 List
	 */
	List<T> find(String sql, List<T> params);
	
	/**
	 * 查询结果(分页)
	 * @param sql	查询语句
	 * @param params	参数集合
	 * @param pageRows	每页记录条数
	 * @param pageIndex	当前页索弄1�7
	 * @return	结果雄1�7 List
	 */
	List<T> find(String sql, List<T> params, int pageRows, int pageIndex);	
	
	/**
	 * 查询结果敄1�7
	 * @param sql	查询语句
	 * @return
	 */
	int listCount(String sql);
	
	/**
	 * 查询结果敄1�7
	 * @param sql	查询语句
	 * @param params	参数集合
	 * @return
	 */
	int listCount(String sql, List<T> params);
}
